//
//  NSDate+sina.swift
//  0330新浪日期处理
//
//  Created by Tang on 16/3/30.
//  Copyright © 2016年 大天朝. All rights reserved.
//

import Foundation

extension NSDate {
    //新浪的时间字符串转成系统的NSDate
    class func dateWithSinaString(dateString: String) -> NSDate {
        let df = NSDateFormatter()
        //设置要转换字符串的格式
        df.dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy"
        //如果是在真机上还需要指定local
        df.locale = NSLocale(localeIdentifier: "EN")
        //转成系统的NSDate
        let date = df.dateFromString(dateString) ?? NSDate() //当前时间
        return date
    }
    /**
     刚刚(一分钟内)
     X分钟前(一小时内)
     X小时前(当天)
     昨天 HH:mm(昨天)
     MM-dd HH:mm(一年内)
     yyyy-MM-dd HH:mm(更早期)
     */
    //用新浪返回的时间和系统时间比较.可以理解self是新浪返回的时间
    func sinaDescripiton() -> String {
        //时间比较 NSCalendar
        let calendar = NSCalendar.currentCalendar()
        //是否是当天
        if calendar.isDateInToday(self) {
            //获取新浪时间和当前时间相差的秒数
           let timeInterval = Int(NSDate().timeIntervalSinceDate(self))
            if timeInterval < 60 {
                //刚刚(一分钟内)
                return "刚刚"
            } else if timeInterval < 60 * 60 {
                //X分钟前(一小时内)
                return "\(timeInterval / 60)分钟前"
            } else {
                //X小时前(当天)
                return "\(timeInterval / 60 / 60)分钟前"
            }
        }
        //后面3种都需要格式化
        var formatter = ""
        //是否是昨天
        if calendar.isDateInYesterday(self) {
            formatter = "昨天 HH:mm"
        } else if calendar.compareDate(self, toDate: NSDate(), toUnitGranularity: NSCalendarUnit.Year) == NSComparisonResult.OrderedSame {
            //判断一年内更早期
            //同一年
           formatter = "MM-dd HH:mm"
        } else {
           formatter = "yyyy-MM-dd HH:mm"
        }
        
        let df = NSDateFormatter()
        df.locale = NSLocale(localeIdentifier: "EN")
        df.dateFormat = formatter
        return df.stringFromDate(self)
    }
}
